// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "cc/test/push_properties_counting_layer_impl.h"

namespace cc {

// static
std::unique_ptr<PushPropertiesCountingLayerImpl>
PushPropertiesCountingLayerImpl::Create(LayerTreeImpl* tree_impl, int id)
{
    return base::WrapUnique(new PushPropertiesCountingLayerImpl(tree_impl, id));
}

PushPropertiesCountingLayerImpl::PushPropertiesCountingLayerImpl(
    LayerTreeImpl* tree_impl,
    int id)
    : LayerImpl(tree_impl, id)
    , push_properties_count_(0)
{
    SetBounds(gfx::Size(1, 1));
}

PushPropertiesCountingLayerImpl::~PushPropertiesCountingLayerImpl() = default;

void PushPropertiesCountingLayerImpl::PushPropertiesTo(LayerImpl* layer)
{
    LayerImpl::PushPropertiesTo(layer);
    push_properties_count_++;
    // Push state to the active tree because we can only access it from there.
    static_cast<PushPropertiesCountingLayerImpl*>(layer)->push_properties_count_ = push_properties_count_;
}

std::unique_ptr<LayerImpl> PushPropertiesCountingLayerImpl::CreateLayerImpl(
    LayerTreeImpl* tree_impl)
{
    return PushPropertiesCountingLayerImpl::Create(tree_impl, LayerImpl::id());
}

} // namespace cc
